Fix for #335012, reported by Matteo Nastasi.
authorKristian Rietveld <kris@imendio.com>
Tue, 18 Jul 2006 13:33:28 +0000 (13:33 +0000)
committerKristian Rietveld <kristian@src.gnome.org>
Tue, 18 Jul 2006 13:33:28 +0000 (13:33 +0000)
2006-07-18  Kristian Rietveld  <kris@imendio.com>

Fix for #335012, reported by Matteo Nastasi.

* gtk/gtktreeview.c (gtk_tree_view_real_start_editing): if the
requested space of the editable is smaller than the cell area,
put it up above the middle of the cell area.

* gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_start_editing):
configure the inner border to cover the cell area if the
entry requisition is smaller than the cell_area.

ChangeLog
ChangeLog.pre-2-10
gtk/gtkcellrenderertext.c
gtk/gtktreeview.c

index 757c7e6063c9fe7e1536eead1a705989051244f0..52da5cc827fe9dcf2806b08d22f2b71afaa1aa6b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2006-07-18  Kristian Rietveld  <kris@imendio.com>
+
+       Fix for #335012, reported by Matteo Nastasi.
+
+       * gtk/gtktreeview.c (gtk_tree_view_real_start_editing): if the
+       requested space of the editable is smaller than the cell area,
+       put it up above the middle of the cell area.
+
+       * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_start_editing):
+       configure the inner border to cover the cell area if the 
+       entry requisition is smaller than the cell_area.
+
 2006-07-18  Kristian Rietveld  <kris@imendio.com>
 
        Another fix for #164884.
index 757c7e6063c9fe7e1536eead1a705989051244f0..52da5cc827fe9dcf2806b08d22f2b71afaa1aa6b 100644 (file)
@@ -1,3 +1,15 @@
+2006-07-18  Kristian Rietveld  <kris@imendio.com>
+
+       Fix for #335012, reported by Matteo Nastasi.
+
+       * gtk/gtktreeview.c (gtk_tree_view_real_start_editing): if the
+       requested space of the editable is smaller than the cell area,
+       put it up above the middle of the cell area.
+
+       * gtk/gtkcellrenderertext.c (gtk_cell_renderer_text_start_editing):
+       configure the inner border to cover the cell area if the 
+       entry requisition is smaller than the cell_area.
+
 2006-07-18  Kristian Rietveld  <kris@imendio.com>
 
        Another fix for #164884.
index 4ad8c083240b211d931b0ca4f8fbffdad23ab630..02a3f36581a096522637b21e09678e07537f4256 100644 (file)
@@ -1778,6 +1778,8 @@ gtk_cell_renderer_text_start_editing (GtkCellRenderer      *cell,
                                      GdkRectangle         *cell_area,
                                      GtkCellRendererState  flags)
 {
+  GtkBorder border;
+  GtkRequisition requisition;
   GtkCellRendererText *celltext;
   GtkCellRendererTextPrivate *priv;
 
@@ -1799,6 +1801,14 @@ gtk_cell_renderer_text_start_editing (GtkCellRenderer      *cell,
   
   gtk_editable_select_region (GTK_EDITABLE (priv->entry), 0, -1);
   
+  gtk_widget_size_request (priv->entry, &requisition);
+  if (requisition.height < cell_area->height)
+    {
+      g_object_get (priv->entry, "inner-border", &border, NULL);
+      border.top = (cell_area->height - requisition.height) / 2;
+      border.bottom = (cell_area->height - requisition.height) / 2;
+      gtk_entry_set_inner_border (GTK_ENTRY (priv->entry), &border);
+    }
 
   priv->in_entry_menu = FALSE;
   if (priv->entry_menu_popdown_timeout)
index 733a3cf79c2f6146dc870d0bc6feebf297d5df84..790bc24ce633bc872feb7132079b957f53056017 100644 (file)
@@ -14280,6 +14280,7 @@ gtk_tree_view_real_start_editing (GtkTreeView       *tree_view,
                                  guint              flags)
 {
   gint pre_val = tree_view->priv->vadjustment->value;
+  GtkRequisition requisition;
 
   tree_view->priv->edited_column = column;
   _gtk_tree_view_column_start_editing (column, GTK_CELL_EDITABLE (cell_editable));
@@ -14288,12 +14289,29 @@ gtk_tree_view_real_start_editing (GtkTreeView       *tree_view,
 
   cell_area->y += pre_val - tree_view->priv->vadjustment->value;
 
+  gtk_widget_size_request (GTK_WIDGET (cell_editable), &requisition);
+
   GTK_TREE_VIEW_SET_FLAG (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS);
-  gtk_tree_view_put (tree_view,
-                    GTK_WIDGET (cell_editable),
-                    cell_area->x, cell_area->y, cell_area->width, cell_area->height);
+
+  if (requisition.height < cell_area->height)
+    {
+      gint diff = cell_area->height - requisition.height;
+      gtk_tree_view_put (tree_view,
+                        GTK_WIDGET (cell_editable),
+                        cell_area->x, cell_area->y + diff/2,
+                        cell_area->width, requisition.height);
+    }
+  else
+    {
+      gtk_tree_view_put (tree_view,
+                        GTK_WIDGET (cell_editable),
+                        cell_area->x, cell_area->y,
+                        cell_area->width, cell_area->height);
+    }
+
   gtk_cell_editable_start_editing (GTK_CELL_EDITABLE (cell_editable),
                                   (GdkEvent *)event);
+
   gtk_widget_grab_focus (GTK_WIDGET (cell_editable));
   g_signal_connect (cell_editable, "remove_widget",
                    G_CALLBACK (gtk_tree_view_remove_widget), tree_view);